[INFO] cloning repository https://github.com/KaarelKurik/rust_wormhole
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KaarelKurik/rust_wormhole" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKaarelKurik%2Frust_wormhole", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKaarelKurik%2Frust_wormhole'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 11406b838ec54cc9fcac987805d09e0c667a31ff
[INFO] checking KaarelKurik/rust_wormhole against master#4eb62535fc12dd1a63fd43a4173e224e79313c4d for pr-158816
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKaarelKurik%2Frust_wormhole" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/KaarelKurik/rust_wormhole
[INFO] finished tweaking git repo https://github.com/KaarelKurik/rust_wormhole
[INFO] tweaked toml for git repo https://github.com/KaarelKurik/rust_wormhole written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KaarelKurik/rust_wormhole on toolchain 4eb62535fc12dd1a63fd43a4173e224e79313c4d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/KaarelKurik/rust_wormhole already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded float-cmp v0.10.0
[INFO] [stderr]   Downloaded ravif v0.11.20
[INFO] [stderr]   Downloaded stl_io v0.10.0
[INFO] [stderr]   Downloaded zune-jpeg v0.4.20
[INFO] [stderr]   Downloaded coin_cbc_sys v0.1.2
[INFO] [stderr]   Downloaded avif-serialize v0.8.5
[INFO] [stderr]   Downloaded coin_cbc v0.1.8
[INFO] [stderr]   Downloaded built v0.7.7
[INFO] [stderr]   Downloaded bitstream-io v2.6.0
[INFO] [stderr]   Downloaded av1-grain v0.2.4
[INFO] [stderr]   Downloaded arbitrary v1.4.1
[INFO] [stderr]   Downloaded anyhow v1.0.98
[INFO] [stderr]   Downloaded imgref v1.11.0
[INFO] [stderr]   Downloaded image-webp v0.2.3
[INFO] [stderr]   Downloaded good_lp v1.14.2
[INFO] [stderr]   Downloaded cgmath v0.18.0
[INFO] [stderr]   Downloaded cc v1.2.31
[INFO] [stderr]   Downloaded exr v1.73.0
[INFO] [stderr]   Downloaded rav1e v0.7.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc
[INFO] running `Command { std: "docker" "start" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc" "/opt/rustwide/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc" "/opt/rustwide/cargo-home/bin/cargo" "+4eb62535fc12dd1a63fd43a4173e224e79313c4d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling built v0.7.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]    Compiling coin_cbc_sys v0.1.2
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking rayon-core v1.12.1
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]    Compiling cgmath v0.18.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking zune-jpeg v0.4.20
[INFO] [stderr]     Checking coin_cbc v0.1.8
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking good_lp v1.14.2
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking approx v0.4.0
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking stl_io v0.10.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]     Checking rust_wormhole v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `collections::HashMap`, `fs::File`, and `io::BufReader`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, f64::consts::PI, fs::File, io::BufReader, path::Path, vec};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^                   ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `common_normals`, `compatible_normal_indices`, `count_compatible_normals`, `dihedral_angle_weighted_vertex_normals`, `find_worst_normal_compatibility`, `half_edges_around_vertex`, `naive_average_vertex_normals`, `normals_around_vertex`, `shapes::tetrahedron`, `vertex_normals_compatible_with_face_normals`, and `worst_normal_compatibility`
[INFO] [stdout]   --> src/main.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | ...::{common_normals, compatible_normal_indices, count_compatible_normals, dihedral_angle_weighted_vertex_normals, find_worst_normal_compatibility, half_edges_around_vertex, naive_average_vertex_normals, normals_around_vertex, vertex_normals_compatible_with_face_normals, worst_normal_compatibility}, piecewise::{Ambient, Camera, ChartIndex, Environment, HalfThroat, push_ray}, shapes::tetrahedron, s...
[INFO] [stdout]    |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:204:42
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let normal = (v[1] - v[0]).cross((v[2] - v[0]));
[INFO] [stdout]     |                                          ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 204 -         let normal = (v[1] - v[0]).cross((v[2] - v[0]));
[INFO] [stdout] 204 +         let normal = (v[1] - v[0]).cross(v[2] - v[0]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:206:35
[INFO] [stdout]     |
[INFO] [stdout] 206 |             let dist = normal.dot((v[i] - v[0]));
[INFO] [stdout]     |                                   ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 206 -             let dist = normal.dot((v[i] - v[0]));
[INFO] [stdout] 206 +             let dist = normal.dot(v[i] - v[0]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:238:47
[INFO] [stdout]     |
[INFO] [stdout] 238 |         let face_normal = (v[1] - v[0]).cross((v[2] - v[0])).normalize();
[INFO] [stdout]     |                                               ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 238 -         let face_normal = (v[1] - v[0]).cross((v[2] - v[0])).normalize();
[INFO] [stdout] 238 +         let face_normal = (v[1] - v[0]).cross(v[2] - v[0]).normalize();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FRAC_1_SQRT_2`, `HashMap`, `MulAssign`, `array`, and `marker::PhantomData`
[INFO] [stdout]  --> src/yz.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     array,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 3 |     collections::{BTreeMap, HashMap},
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 4 |     f64::consts::{FRAC_1_SQRT_2, TAU},
[INFO] [stdout]   |                   ^^^^^^^^^^^^^
[INFO] [stdout] 5 |     iter::Product,
[INFO] [stdout] 6 |     marker::PhantomData,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     ops::{Add, AddAssign, Index, Mul, MulAssign, Neg, Sub},
[INFO] [stdout]   |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `collections::HashMap`, `fs::File`, and `io::BufReader`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, f64::consts::PI, fs::File, io::BufReader, path::Path, vec};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^                   ^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `common_normals`, `compatible_normal_indices`, `count_compatible_normals`, `dihedral_angle_weighted_vertex_normals`, `find_worst_normal_compatibility`, `half_edges_around_vertex`, `naive_average_vertex_normals`, `normals_around_vertex`, `shapes::tetrahedron`, `vertex_normals_compatible_with_face_normals`, and `worst_normal_compatibility`
[INFO] [stdout]   --> src/main.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | ...::{common_normals, compatible_normal_indices, count_compatible_normals, dihedral_angle_weighted_vertex_normals, find_worst_normal_compatibility, half_edges_around_vertex, naive_average_vertex_normals, normals_around_vertex, vertex_normals_compatible_with_face_normals, worst_normal_compatibility}, piecewise::{Ambient, Camera, ChartIndex, Environment, HalfThroat, push_ray}, shapes::tetrahedron, s...
[INFO] [stdout]    |       ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:204:42
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let normal = (v[1] - v[0]).cross((v[2] - v[0]));
[INFO] [stdout]     |                                          ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 204 -         let normal = (v[1] - v[0]).cross((v[2] - v[0]));
[INFO] [stdout] 204 +         let normal = (v[1] - v[0]).cross(v[2] - v[0]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:206:35
[INFO] [stdout]     |
[INFO] [stdout] 206 |             let dist = normal.dot((v[i] - v[0]));
[INFO] [stdout]     |                                   ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 206 -             let dist = normal.dot((v[i] - v[0]));
[INFO] [stdout] 206 +             let dist = normal.dot(v[i] - v[0]);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/shapes.rs:238:47
[INFO] [stdout]     |
[INFO] [stdout] 238 |         let face_normal = (v[1] - v[0]).cross((v[2] - v[0])).normalize();
[INFO] [stdout]     |                                               ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 238 -         let face_normal = (v[1] - v[0]).cross((v[2] - v[0])).normalize();
[INFO] [stdout] 238 +         let face_normal = (v[1] - v[0]).cross(v[2] - v[0]).normalize();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FRAC_1_SQRT_2`, `HashMap`, `MulAssign`, `array`, and `marker::PhantomData`
[INFO] [stdout]  --> src/yz.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     array,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 3 |     collections::{BTreeMap, HashMap},
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 4 |     f64::consts::{FRAC_1_SQRT_2, TAU},
[INFO] [stdout]   |                   ^^^^^^^^^^^^^
[INFO] [stdout] 5 |     iter::Product,
[INFO] [stdout] 6 |     marker::PhantomData,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     ops::{Add, AddAssign, Index, Mul, MulAssign, Neg, Sub},
[INFO] [stdout]   |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Float`
[INFO] [stdout]   --> src/yz.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 |     num_traits::{Float, Pow, real::Real},
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `real::Real`
[INFO] [stdout]   --> src/yz.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     num_traits::{Float, Pow, real::Real},
[INFO] [stdout]    |                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::Float`
[INFO] [stdout]  --> src/intrinsic.rs:2:70
[INFO] [stdout]   |
[INFO] [stdout] 2 |     BaseFloat, InnerSpace, Rad, Vector2, Vector3, VectorSpace, Zero, num_traits::Float, vec2, vec3
[INFO] [stdout]   |                                                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `quad_faces`
[INFO] [stdout]   --> src/shapes.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let quad_faces = [
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_quad_faces`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/skybox.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 let mut im = image::open(bg_path.join(format!("{}.png", x)))?.into_rgba8();
[INFO] [stdout]    |                     ----^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hei`
[INFO] [stdout]    --> src/sweep.rs:302:36
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let ChartIndex::MidThroat(hti, hei) = throat_patch_ray.chart_index else {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_hei`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/sweep.rs:459:9
[INFO] [stdout]     |
[INFO] [stdout] 459 |     for i in 0..iter_bound {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hti`
[INFO] [stdout]    --> src/sweep.rs:569:10
[INFO] [stdout]     |
[INFO] [stdout] 569 |     let (hti, hei) = match throat_patch_ray.chart_index {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_hti`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/yz.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     p: F,
[INFO] [stdout]    |     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dx`
[INFO] [stdout]   --> src/yz.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     let dx = vec2(x.x.drop_const(), x.y.drop_const());
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_dx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a_vu`
[INFO] [stdout]    --> src/yz.rs:146:26
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let [[[a_uu, a_uv], [a_vu, a_vv]], [[b_uu, b_uv], [b_vu, b_vv]]] = f.d3(x);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_a_vu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b_vu`
[INFO] [stdout]    --> src/yz.rs:146:56
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let [[[a_uu, a_uv], [a_vu, a_vv]], [[b_uu, b_uv], [b_vu, b_vv]]] = f.d3(x);
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_b_vu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Float`
[INFO] [stdout]   --> src/yz.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 |     num_traits::{Float, Pow, real::Real},
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `real::Real`
[INFO] [stdout]   --> src/yz.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     num_traits::{Float, Pow, real::Real},
[INFO] [stdout]    |                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::Float`
[INFO] [stdout]  --> src/intrinsic.rs:2:70
[INFO] [stdout]   |
[INFO] [stdout] 2 |     BaseFloat, InnerSpace, Rad, Vector2, Vector3, VectorSpace, Zero, num_traits::Float, vec2, vec3
[INFO] [stdout]   |                                                                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hti`
[INFO] [stdout]    --> src/piecewise.rs:239:10
[INFO] [stdout]     |
[INFO] [stdout] 239 |     let (hti, hei) = match throat_patch_ray.chart_index {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_hti`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `quad_faces`
[INFO] [stdout]   --> src/shapes.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let quad_faces = [
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_quad_faces`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hei`
[INFO] [stdout]    --> src/piecewise.rs:338:36
[INFO] [stdout]     |
[INFO] [stdout] 338 |     let ChartIndex::MidThroat(hti, hei) = throat_patch_ray.chart_index else {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_hei`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/skybox.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 let mut im = image::open(bg_path.join(format!("{}.png", x)))?.into_rgba8();
[INFO] [stdout]    |                     ----^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hei`
[INFO] [stdout]    --> src/sweep.rs:302:36
[INFO] [stdout]     |
[INFO] [stdout] 302 |     let ChartIndex::MidThroat(hti, hei) = throat_patch_ray.chart_index else {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_hei`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/sweep.rs:459:9
[INFO] [stdout]     |
[INFO] [stdout] 459 |     for i in 0..iter_bound {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hti`
[INFO] [stdout]    --> src/sweep.rs:569:10
[INFO] [stdout]     |
[INFO] [stdout] 569 |     let (hti, hei) = match throat_patch_ray.chart_index {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_hti`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `he`
[INFO] [stdout]    --> src/intrinsic.rs:251:38
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                      ^^ help: if this is intentional, prefix it with an underscore: `_he`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/intrinsic.rs:251:53
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                     ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/intrinsic.rs:251:68
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                                    ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/intrinsic.rs:251:83
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                                                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/yz.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     p: F,
[INFO] [stdout]    |     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dx`
[INFO] [stdout]   --> src/yz.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     let dx = vec2(x.x.drop_const(), x.y.drop_const());
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_dx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `empty_env`
[INFO] [stdout]   --> src/main.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let empty_env = Environment::<f64> {
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a_vu`
[INFO] [stdout]    --> src/yz.rs:146:26
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let [[[a_uu, a_uv], [a_vu, a_vv]], [[b_uu, b_uv], [b_vu, b_vv]]] = f.d3(x);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_a_vu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b_vu`
[INFO] [stdout]    --> src/yz.rs:146:56
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let [[[a_uu, a_uv], [a_vu, a_vv]], [[b_uu, b_uv], [b_vu, b_vv]]] = f.d3(x);
[INFO] [stdout]     |                                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_b_vu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::HalfThroat::0`
[INFO] [stdout]    --> src/sweep.rs:475:16
[INFO] [stdout]     |
[INFO] [stdout] 475 |     HalfThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::HalfThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::MidThroat::0`
[INFO] [stdout]    --> src/sweep.rs:476:15
[INFO] [stdout]     |
[INFO] [stdout] 476 |     MidThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::MidThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::MeshLocal2DTriangle::0`
[INFO] [stdout]    --> src/sweep.rs:477:25
[INFO] [stdout]     |
[INFO] [stdout] 477 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::MeshLocal2DTriangle::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::HalfThroat::0`
[INFO] [stdout]    --> src/piecewise.rs:114:16
[INFO] [stdout]     |
[INFO] [stdout] 114 |     HalfThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::HalfThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::MidThroat::0`
[INFO] [stdout]    --> src/piecewise.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |     MidThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::MidThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::MeshLocal2DTriangle::0`
[INFO] [stdout]    --> src/piecewise.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::MeshLocal2DTriangle::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_to_color` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn dir_to_color<T: BaseFloat>(v: Vector3<T>) -> Rgba<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `halfedges_around_vertex` is never used
[INFO] [stdout]   --> src/geometry.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn halfedges_around_vertex<T: Float>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `well_negative` is never used
[INFO] [stdout]    --> src/geometry.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn well_negative<T: BaseFloat>(x: T) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vertices` and `half_edges` are never used
[INFO] [stdout]    --> src/geometry.rs:315:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | impl<T: BaseFloat> Mesh<T> {
[INFO] [stdout]     | -------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn vertices(&self) -> &Vec<Vector3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn half_edges(&self) -> &Vec<HalfEdge> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp_into_triangle` is never used
[INFO] [stdout]    --> src/geometry.rs:365:4
[INFO] [stdout]     |
[INFO] [stdout] 365 | fn clamp_into_triangle<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transpose` is never used
[INFO] [stdout]   --> src/matrix.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<T: Copy> Matrix3x4<T> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] 21 |     fn transpose(&self) -> Matrix4x3<T> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cube` is never used
[INFO] [stdout]  --> src/shapes.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn cube() -> Mesh<f64> {
[INFO] [stdout]   |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tetrahedron` is never used
[INFO] [stdout]   --> src/shapes.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn tetrahedron() -> Mesh<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dodecahedron` is never used
[INFO] [stdout]    --> src/shapes.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn dodecahedron() -> Mesh<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroatIndex` is never constructed
[INFO] [stdout]   --> src/sweep.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | struct HalfThroatIndex(usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV2` is never constructed
[INFO] [stdout]    --> src/sweep.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | struct SituatedQV2<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV3` is never constructed
[INFO] [stdout]    --> src/sweep.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct SituatedQV3<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV4` is never constructed
[INFO] [stdout]    --> src/sweep.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct SituatedQV4<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ambient` is never constructed
[INFO] [stdout]    --> src/sweep.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct Ambient {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroat` is never constructed
[INFO] [stdout]    --> src/sweep.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct HalfThroat<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Environment` is never constructed
[INFO] [stdout]    --> src/sweep.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct Environment<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroatIntersection` is never constructed
[INFO] [stdout]    --> src/sweep.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | struct HalfThroatIntersection<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_closest_half_throat_intersection` and `ray_color` are never used
[INFO] [stdout]    --> src/sweep.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | impl<T: BaseFloat> Environment<T> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 161 |     fn find_closest_half_throat_intersection(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn ray_color(&self, ray: SituatedQV3<T>) -> Option<Rgba<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_ambient_ray` is never used
[INFO] [stdout]    --> src/sweep.rs:205:4
[INFO] [stdout]     |
[INFO] [stdout] 205 | fn process_ambient_ray<T: BaseFloat>(env: &Environment<T>, ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_throat_entry` is never used
[INFO] [stdout]    --> src/sweep.rs:214:4
[INFO] [stdout]     |
[INFO] [stdout] 214 | fn half_throat_entry<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_throat_exit` is never used
[INFO] [stdout]    --> src/sweep.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn half_throat_exit<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_entry` is never used
[INFO] [stdout]    --> src/sweep.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn mid_throat_entry<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_exit` is never used
[INFO] [stdout]    --> src/sweep.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn mid_throat_exit<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_transition` is never used
[INFO] [stdout]    --> src/sweep.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn mid_throat_transition<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `midthroat_traverse` is never used
[INFO] [stdout]    --> src/sweep.rs:294:4
[INFO] [stdout]     |
[INFO] [stdout] 294 | fn midthroat_traverse<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `halfthroat_step` is never used
[INFO] [stdout]    --> src/sweep.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn halfthroat_step<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_ray_step` is never used
[INFO] [stdout]    --> src/sweep.rs:431:4
[INFO] [stdout]     |
[INFO] [stdout] 431 | fn push_ray_step<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_ray` is never used
[INFO] [stdout]    --> src/sweep.rs:450:8
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub fn push_ray<T: BaseFloat>(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChartIndex` is never used
[INFO] [stdout]    --> src/sweep.rs:473:10
[INFO] [stdout]     |
[INFO] [stdout] 473 | pub enum ChartIndex {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `throat_indices` is never used
[INFO] [stdout]    --> src/sweep.rs:481:8
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl ChartIndex {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 481 |     fn throat_indices(self) -> Option<(HalfThroatIndex, HalfEdgeIndex)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_tilde` is never used
[INFO] [stdout]    --> src/sweep.rs:497:4
[INFO] [stdout]     |
[INFO] [stdout] 497 | fn jac_tilde<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, t: T) -> Matrix4x3<T> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_tilde_pinv` is never used
[INFO] [stdout]    --> src/sweep.rs:508:4
[INFO] [stdout]     |
[INFO] [stdout] 508 | fn jac_tilde_pinv<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, t: T) -> Matrix3x4<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ortho_to_uvt` is never used
[INFO] [stdout]    --> src/sweep.rs:513:4
[INFO] [stdout]     |
[INFO] [stdout] 513 | fn ortho_to_uvt<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac` is never used
[INFO] [stdout]    --> src/sweep.rs:527:4
[INFO] [stdout]     |
[INFO] [stdout] 527 | fn jac<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix4x3<T> {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_pinv` is never used
[INFO] [stdout]    --> src/sweep.rs:540:4
[INFO] [stdout]     |
[INFO] [stdout] 540 | fn jac_pinv<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix3x4<T> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `djac_dt` is never used
[INFO] [stdout]    --> src/sweep.rs:543:4
[INFO] [stdout]     |
[INFO] [stdout] 543 | fn djac_dt<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uvt_to_4pos` is never used
[INFO] [stdout]    --> src/sweep.rs:562:4
[INFO] [stdout]     |
[INFO] [stdout] 562 | fn uvt_to_4pos<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Vector4<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `project_uvt_to_mesh` is never used
[INFO] [stdout]    --> src/sweep.rs:568:4
[INFO] [stdout]     |
[INFO] [stdout] 568 | fn project_uvt_to_mesh<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> IndexedRay<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase_vel` is never used
[INFO] [stdout]    --> src/sweep.rs:580:4
[INFO] [stdout]     |
[INFO] [stdout] 580 | fn phase_vel<T: BaseFloat>(mesh: &Mesh<T>, ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Camera` is never constructed
[INFO] [stdout]    --> src/sweep.rs:594:12
[INFO] [stdout]     |
[INFO] [stdout] 594 | pub struct Camera<T: Float> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fragpos_to_ray` and `fragrays` are never used
[INFO] [stdout]    --> src/sweep.rs:605:12
[INFO] [stdout]     |
[INFO] [stdout] 604 | impl<T: BaseFloat> Camera<T> {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] 605 |     pub fn fragpos_to_ray(&self, pos: Vector2<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn fragrays(&self) -> impl Iterator<Item = SituatedQV3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_exp` is never used
[INFO] [stdout]   --> src/yz.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn complex_exp<T: BaseFloat>(x: Vector2<T>, p: T) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_mul_poly` is never used
[INFO] [stdout]   --> src/yz.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn complex_mul_poly<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_exp_poly` is never used
[INFO] [stdout]   --> src/yz.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn complex_exp_poly<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_to_wedge` is never used
[INFO] [stdout]   --> src/yz.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn square_to_wedge<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wedge_to_square` is never used
[INFO] [stdout]   --> src/yz.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn wedge_to_square<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_to_base_wedge` is never used
[INFO] [stdout]   --> src/yz.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn rotate_to_base_wedge<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wedge_index` is never used
[INFO] [stdout]   --> src/yz.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn wedge_index<T: BaseFloat>(k: T, x: Vector2<T>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h` is never used
[INFO] [stdout]   --> src/yz.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn h<T: BaseFloat>(x: T) -> T {
[INFO] [stdout]    |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eta` is never used
[INFO] [stdout]   --> src/yz.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn eta<T: BaseFloat>(x: T) -> T {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_weight` is never used
[INFO] [stdout]   --> src/yz.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn square_weight<T: BaseFloat>(x: Vector2<T>) -> T {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_weight` is never used
[INFO] [stdout]   --> src/yz.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn chart_weight<F: BaseFloat>(k: F, x: Vector2<F>) -> F {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bare_chart_transition` is never used
[INFO] [stdout]    --> src/yz.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn bare_chart_transition<T: BaseFloat>(k1: T, k2: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ChartFn` is never used
[INFO] [stdout]    --> src/yz.rs:110:7
[INFO] [stdout]     |
[INFO] [stdout] 110 | trait ChartFn<F: BaseFloat> {
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ThroatFn` is never used
[INFO] [stdout]    --> src/yz.rs:120:7
[INFO] [stdout]     |
[INFO] [stdout] 120 | trait ThroatFn<F: BaseFloat> {
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal` is never used
[INFO] [stdout]    --> src/yz.rs:125:4
[INFO] [stdout]     |
[INFO] [stdout] 125 | fn chart_normal<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> Vector3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal_d1` is never used
[INFO] [stdout]    --> src/yz.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn chart_normal_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> [Vector3<F>; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal_d2` is never used
[INFO] [stdout]    --> src/yz.rs:143:4
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn chart_normal_d2<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> [[Vector3<F>; 2]; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_d1` is never used
[INFO] [stdout]    --> src/yz.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn psi_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [Vector3<F>; 3] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_d2` is never used
[INFO] [stdout]    --> src/yz.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn psi_d2<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [[Vector3<F>; 3]; 3] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_metric` is never used
[INFO] [stdout]    --> src/yz.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn psi_metric<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> Matrix3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_metric_d1` is never used
[INFO] [stdout]    --> src/yz.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn psi_metric_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [Matrix3<F>; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_metric` is never used
[INFO] [stdout]    --> src/yz.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn throat_metric<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_metric_d1` is never used
[INFO] [stdout]    --> src/yz.rs:252:4
[INFO] [stdout]     |
[INFO] [stdout] 252 | fn throat_metric_d1<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_christoffel` is never used
[INFO] [stdout]    --> src/yz.rs:264:4
[INFO] [stdout]     |
[INFO] [stdout] 264 | fn throat_christoffel<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_parallel_transport_vel` is never used
[INFO] [stdout]    --> src/yz.rs:287:4
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn throat_parallel_transport_vel<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Poly2` is never constructed
[INFO] [stdout]    --> src/yz.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | struct Poly2<F: BaseFloat> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `eval` is never used
[INFO] [stdout]    --> src/yz.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl<F: BaseFloat> Poly2<F> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] 310 |     fn eval(&self, x: F, y: F) -> F {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChartIndex` is never constructed
[INFO] [stdout]    --> src/yz.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | struct ChartIndex(usize);
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chart` is never constructed
[INFO] [stdout]    --> src/yz.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Chart<F>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_half_edge_ccw` is never used
[INFO] [stdout]    --> src/yz.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn next_half_edge_ccw<F: BaseFloat>(mesh: &Mesh<F>, half_edge: HalfEdge) -> HalfEdge {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nth_half_edge_ccw` is never used
[INFO] [stdout]    --> src/yz.rs:341:4
[INFO] [stdout]     |
[INFO] [stdout] 341 | fn nth_half_edge_ccw<F: BaseFloat>(mesh: &Mesh<F>, half_edge: HalfEdge, n: usize) -> HalfEdge {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_transition` is never used
[INFO] [stdout]    --> src/yz.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn chart_transition<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `other_charts` is never used
[INFO] [stdout]    --> src/yz.rs:373:4
[INFO] [stdout]     |
[INFO] [stdout] 373 | fn other_charts<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `local_geometry` is never used
[INFO] [stdout]    --> src/yz.rs:387:4
[INFO] [stdout]     |
[INFO] [stdout] 387 | fn local_geometry<F: BaseFloat>(c: &Chart<F>, x: Vector2<F>) -> Vector3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_geometry` is never used
[INFO] [stdout]    --> src/yz.rs:395:4
[INFO] [stdout]     |
[INFO] [stdout] 395 | fn chart_geometry<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `eval` and `drop_const` are never used
[INFO] [stdout]    --> src/yz.rs:420:8
[INFO] [stdout]     |
[INFO] [stdout] 419 | impl<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize> NilPoly<F, MAX_DEG, NVAR> {
[INFO] [stdout]     | ------------------------------------------------------------------------------------- methods in this implementation
[INFO] [stdout] 420 |     fn eval<A: AddAssign<A> + Mul<F, Output = A> + Zero + Product<A>>(&self, xs: &[A]) -> A
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     fn drop_const(&self) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Atlas` is never constructed
[INFO] [stdout]    --> src/yz.rs:616:8
[INFO] [stdout]     |
[INFO] [stdout] 616 | struct Atlas<F: BaseFloat, T: ThroatFn<F>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `index` is never read
[INFO] [stdout]   --> src/piecewise.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct HalfThroat<T: Float> {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 78 |     pub index: usize,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MeshLocal2DTriangle` is never constructed
[INFO] [stdout]    --> src/piecewise.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub enum ChartIndex {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 116 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ChartIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `frame_inv` is never read
[INFO] [stdout]    --> src/piecewise.rs:528:9
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct Camera<T: Float> {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub frame_inv: Matrix3<T>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fragrays` is never used
[INFO] [stdout]    --> src/piecewise.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 534 | impl<T: BaseFloat> Camera<T> {
[INFO] [stdout]     | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn fragrays(&self) -> impl Iterator<Item = SituatedQV3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertices_to_half_edges` is never used
[INFO] [stdout]  --> src/intrinsic.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn vertices_to_half_edges<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vec<HalfEdgeIndex>> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertex_normals_compatible_with_face_normals` is never used
[INFO] [stdout]   --> src/intrinsic.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn vertex_normals_compatible_with_face_normals<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_compatible_normals` is never used
[INFO] [stdout]   --> src/intrinsic.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn count_compatible_normals<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compatible_normal_indices` is never used
[INFO] [stdout]   --> src/intrinsic.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn compatible_normal_indices<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `worst_normal_compatibility` is never used
[INFO] [stdout]   --> src/intrinsic.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn worst_normal_compatibility<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_worst_normal_compatibility` is never used
[INFO] [stdout]    --> src/intrinsic.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn find_worst_normal_compatibility<T: BaseFloat>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dihedral_angle` is never used
[INFO] [stdout]    --> src/intrinsic.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn dihedral_angle<T: BaseFloat>(m: &Mesh<T>, hex: HalfEdgeIndex) -> Rad<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dihedral_angle_weighted_vertex_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn dihedral_angle_weighted_vertex_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `naive_average_vertex_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn naive_average_vertex_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lp_common_normal` is never used
[INFO] [stdout]    --> src/intrinsic.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub fn lp_common_normal(face_normals: Vec<Vector3<f64>>) -> Vector3<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `common_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn common_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normals_around_vertex` is never used
[INFO] [stdout]    --> src/intrinsic.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn normals_around_vertex<T: BaseFloat>(m: &Mesh<T>, vertex_index: usize) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_edges_around_vertex` is never used
[INFO] [stdout]    --> src/intrinsic.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn half_edges_around_vertex<T: BaseFloat>(m: &Mesh<T>, vertex_index: usize) -> Vec<HalfEdge> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric_coons_patch` is never used
[INFO] [stdout]    --> src/intrinsic.rs:235:4
[INFO] [stdout]     |
[INFO] [stdout] 235 | fn barycentric_coons_patch<T: BaseFloat, W: VectorSpace<Scalar = T>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpolate_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hti`
[INFO] [stdout]    --> src/piecewise.rs:239:10
[INFO] [stdout]     |
[INFO] [stdout] 239 |     let (hti, hei) = match throat_patch_ray.chart_index {
[INFO] [stdout]     |          ^^^ help: if this is intentional, prefix it with an underscore: `_hti`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hei`
[INFO] [stdout]    --> src/piecewise.rs:338:36
[INFO] [stdout]     |
[INFO] [stdout] 338 |     let ChartIndex::MidThroat(hti, hei) = throat_patch_ray.chart_index else {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_hei`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `he`
[INFO] [stdout]    --> src/intrinsic.rs:251:38
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                      ^^ help: if this is intentional, prefix it with an underscore: `_he`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/intrinsic.rs:251:53
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                     ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/intrinsic.rs:251:68
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                                    ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/intrinsic.rs:251:83
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |                                                                                   ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `empty_env`
[INFO] [stdout]   --> src/main.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     let empty_env = Environment::<f64> {
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_empty_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::HalfThroat::0`
[INFO] [stdout]    --> src/sweep.rs:475:16
[INFO] [stdout]     |
[INFO] [stdout] 475 |     HalfThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::HalfThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::MidThroat::0`
[INFO] [stdout]    --> src/sweep.rs:476:15
[INFO] [stdout]     |
[INFO] [stdout] 476 |     MidThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::MidThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sweep::HalfThroatIndex` is more private than the item `sweep::ChartIndex::MeshLocal2DTriangle::0`
[INFO] [stdout]    --> src/sweep.rs:477:25
[INFO] [stdout]     |
[INFO] [stdout] 477 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^ field `sweep::ChartIndex::MeshLocal2DTriangle::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `sweep::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/sweep.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::HalfThroat::0`
[INFO] [stdout]    --> src/piecewise.rs:114:16
[INFO] [stdout]     |
[INFO] [stdout] 114 |     HalfThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::HalfThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::MidThroat::0`
[INFO] [stdout]    --> src/piecewise.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |     MidThroat(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::MidThroat::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `piecewise::HalfThroatIndex` is more private than the item `piecewise::ChartIndex::MeshLocal2DTriangle::0`
[INFO] [stdout]    --> src/piecewise.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^ field `piecewise::ChartIndex::MeshLocal2DTriangle::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `piecewise::HalfThroatIndex` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/piecewise.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | struct HalfThroatIndex(usize);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_to_color` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn dir_to_color<T: BaseFloat>(v: Vector3<T>) -> Rgba<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `halfedges_around_vertex` is never used
[INFO] [stdout]   --> src/geometry.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn halfedges_around_vertex<T: Float>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `well_negative` is never used
[INFO] [stdout]    --> src/geometry.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn well_negative<T: BaseFloat>(x: T) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vertices` and `half_edges` are never used
[INFO] [stdout]    --> src/geometry.rs:315:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | impl<T: BaseFloat> Mesh<T> {
[INFO] [stdout]     | -------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn vertices(&self) -> &Vec<Vector3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn half_edges(&self) -> &Vec<HalfEdge> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp_into_triangle` is never used
[INFO] [stdout]    --> src/geometry.rs:365:4
[INFO] [stdout]     |
[INFO] [stdout] 365 | fn clamp_into_triangle<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transpose` is never used
[INFO] [stdout]   --> src/matrix.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<T: Copy> Matrix3x4<T> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] 21 |     fn transpose(&self) -> Matrix4x3<T> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cube` is never used
[INFO] [stdout]  --> src/shapes.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn cube() -> Mesh<f64> {
[INFO] [stdout]   |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tetrahedron` is never used
[INFO] [stdout]   --> src/shapes.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn tetrahedron() -> Mesh<f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dodecahedron` is never used
[INFO] [stdout]    --> src/shapes.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn dodecahedron() -> Mesh<f64> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroatIndex` is never constructed
[INFO] [stdout]   --> src/sweep.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | struct HalfThroatIndex(usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV2` is never constructed
[INFO] [stdout]    --> src/sweep.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | struct SituatedQV2<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV3` is never constructed
[INFO] [stdout]    --> src/sweep.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct SituatedQV3<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SituatedQV4` is never constructed
[INFO] [stdout]    --> src/sweep.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | struct SituatedQV4<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ambient` is never constructed
[INFO] [stdout]    --> src/sweep.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct Ambient {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroat` is never constructed
[INFO] [stdout]    --> src/sweep.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct HalfThroat<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Environment` is never constructed
[INFO] [stdout]    --> src/sweep.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct Environment<T: Float> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HalfThroatIntersection` is never constructed
[INFO] [stdout]    --> src/sweep.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | struct HalfThroatIntersection<T: Float> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_closest_half_throat_intersection` and `ray_color` are never used
[INFO] [stdout]    --> src/sweep.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | impl<T: BaseFloat> Environment<T> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 161 |     fn find_closest_half_throat_intersection(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn ray_color(&self, ray: SituatedQV3<T>) -> Option<Rgba<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_ambient_ray` is never used
[INFO] [stdout]    --> src/sweep.rs:205:4
[INFO] [stdout]     |
[INFO] [stdout] 205 | fn process_ambient_ray<T: BaseFloat>(env: &Environment<T>, ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_throat_entry` is never used
[INFO] [stdout]    --> src/sweep.rs:214:4
[INFO] [stdout]     |
[INFO] [stdout] 214 | fn half_throat_entry<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_throat_exit` is never used
[INFO] [stdout]    --> src/sweep.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn half_throat_exit<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_entry` is never used
[INFO] [stdout]    --> src/sweep.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn mid_throat_entry<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_exit` is never used
[INFO] [stdout]    --> src/sweep.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn mid_throat_exit<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mid_throat_transition` is never used
[INFO] [stdout]    --> src/sweep.rs:274:4
[INFO] [stdout]     |
[INFO] [stdout] 274 | fn mid_throat_transition<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `midthroat_traverse` is never used
[INFO] [stdout]    --> src/sweep.rs:294:4
[INFO] [stdout]     |
[INFO] [stdout] 294 | fn midthroat_traverse<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `halfthroat_step` is never used
[INFO] [stdout]    --> src/sweep.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn halfthroat_step<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_ray_step` is never used
[INFO] [stdout]    --> src/sweep.rs:431:4
[INFO] [stdout]     |
[INFO] [stdout] 431 | fn push_ray_step<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_ray` is never used
[INFO] [stdout]    --> src/sweep.rs:450:8
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub fn push_ray<T: BaseFloat>(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChartIndex` is never used
[INFO] [stdout]    --> src/sweep.rs:473:10
[INFO] [stdout]     |
[INFO] [stdout] 473 | pub enum ChartIndex {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `throat_indices` is never used
[INFO] [stdout]    --> src/sweep.rs:481:8
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl ChartIndex {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 481 |     fn throat_indices(self) -> Option<(HalfThroatIndex, HalfEdgeIndex)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_tilde` is never used
[INFO] [stdout]    --> src/sweep.rs:497:4
[INFO] [stdout]     |
[INFO] [stdout] 497 | fn jac_tilde<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, t: T) -> Matrix4x3<T> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_tilde_pinv` is never used
[INFO] [stdout]    --> src/sweep.rs:508:4
[INFO] [stdout]     |
[INFO] [stdout] 508 | fn jac_tilde_pinv<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, t: T) -> Matrix3x4<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ortho_to_uvt` is never used
[INFO] [stdout]    --> src/sweep.rs:513:4
[INFO] [stdout]     |
[INFO] [stdout] 513 | fn ortho_to_uvt<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac` is never used
[INFO] [stdout]    --> src/sweep.rs:527:4
[INFO] [stdout]     |
[INFO] [stdout] 527 | fn jac<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix4x3<T> {
[INFO] [stdout]     |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jac_pinv` is never used
[INFO] [stdout]    --> src/sweep.rs:540:4
[INFO] [stdout]     |
[INFO] [stdout] 540 | fn jac_pinv<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Matrix3x4<T> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `djac_dt` is never used
[INFO] [stdout]    --> src/sweep.rs:543:4
[INFO] [stdout]     |
[INFO] [stdout] 543 | fn djac_dt<T: BaseFloat>(
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uvt_to_4pos` is never used
[INFO] [stdout]    --> src/sweep.rs:562:4
[INFO] [stdout]     |
[INFO] [stdout] 562 | fn uvt_to_4pos<T: BaseFloat>(mesh: &Mesh<T>, he: HalfEdge, uvt: Vector3<T>) -> Vector4<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `project_uvt_to_mesh` is never used
[INFO] [stdout]    --> src/sweep.rs:568:4
[INFO] [stdout]     |
[INFO] [stdout] 568 | fn project_uvt_to_mesh<T: BaseFloat>(throat_patch_ray: SituatedQV3<T>) -> IndexedRay<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase_vel` is never used
[INFO] [stdout]    --> src/sweep.rs:580:4
[INFO] [stdout]     |
[INFO] [stdout] 580 | fn phase_vel<T: BaseFloat>(mesh: &Mesh<T>, ray: SituatedQV3<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Camera` is never constructed
[INFO] [stdout]    --> src/sweep.rs:594:12
[INFO] [stdout]     |
[INFO] [stdout] 594 | pub struct Camera<T: Float> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fragpos_to_ray` and `fragrays` are never used
[INFO] [stdout]    --> src/sweep.rs:605:12
[INFO] [stdout]     |
[INFO] [stdout] 604 | impl<T: BaseFloat> Camera<T> {
[INFO] [stdout]     | ---------------------------- methods in this implementation
[INFO] [stdout] 605 |     pub fn fragpos_to_ray(&self, pos: Vector2<T>) -> SituatedQV3<T> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn fragrays(&self) -> impl Iterator<Item = SituatedQV3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_exp` is never used
[INFO] [stdout]   --> src/yz.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn complex_exp<T: BaseFloat>(x: Vector2<T>, p: T) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_mul_poly` is never used
[INFO] [stdout]   --> src/yz.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn complex_mul_poly<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complex_exp_poly` is never used
[INFO] [stdout]   --> src/yz.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn complex_exp_poly<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_to_wedge` is never used
[INFO] [stdout]   --> src/yz.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn square_to_wedge<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wedge_to_square` is never used
[INFO] [stdout]   --> src/yz.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn wedge_to_square<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_to_base_wedge` is never used
[INFO] [stdout]   --> src/yz.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn rotate_to_base_wedge<T: BaseFloat>(k: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wedge_index` is never used
[INFO] [stdout]   --> src/yz.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn wedge_index<T: BaseFloat>(k: T, x: Vector2<T>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h` is never used
[INFO] [stdout]   --> src/yz.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn h<T: BaseFloat>(x: T) -> T {
[INFO] [stdout]    |    ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eta` is never used
[INFO] [stdout]   --> src/yz.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn eta<T: BaseFloat>(x: T) -> T {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_weight` is never used
[INFO] [stdout]   --> src/yz.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn square_weight<T: BaseFloat>(x: Vector2<T>) -> T {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_weight` is never used
[INFO] [stdout]   --> src/yz.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn chart_weight<F: BaseFloat>(k: F, x: Vector2<F>) -> F {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bare_chart_transition` is never used
[INFO] [stdout]    --> src/yz.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn bare_chart_transition<T: BaseFloat>(k1: T, k2: T, x: Vector2<T>) -> Vector2<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ChartFn` is never used
[INFO] [stdout]    --> src/yz.rs:110:7
[INFO] [stdout]     |
[INFO] [stdout] 110 | trait ChartFn<F: BaseFloat> {
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ThroatFn` is never used
[INFO] [stdout]    --> src/yz.rs:120:7
[INFO] [stdout]     |
[INFO] [stdout] 120 | trait ThroatFn<F: BaseFloat> {
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal` is never used
[INFO] [stdout]    --> src/yz.rs:125:4
[INFO] [stdout]     |
[INFO] [stdout] 125 | fn chart_normal<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> Vector3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal_d1` is never used
[INFO] [stdout]    --> src/yz.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn chart_normal_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> [Vector3<F>; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_normal_d2` is never used
[INFO] [stdout]    --> src/yz.rs:143:4
[INFO] [stdout]     |
[INFO] [stdout] 143 | fn chart_normal_d2<F: BaseFloat, T: ChartFn<F>>(f: &T, x: Vector2<F>) -> [[Vector3<F>; 2]; 2] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_d1` is never used
[INFO] [stdout]    --> src/yz.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn psi_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [Vector3<F>; 3] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_d2` is never used
[INFO] [stdout]    --> src/yz.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn psi_d2<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [[Vector3<F>; 3]; 3] {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_metric` is never used
[INFO] [stdout]    --> src/yz.rs:222:4
[INFO] [stdout]     |
[INFO] [stdout] 222 | fn psi_metric<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> Matrix3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psi_metric_d1` is never used
[INFO] [stdout]    --> src/yz.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn psi_metric_d1<F: BaseFloat, T: ChartFn<F>>(f: &T, uvl: Vector3<F>) -> [Matrix3<F>; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_metric` is never used
[INFO] [stdout]    --> src/yz.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn throat_metric<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_metric_d1` is never used
[INFO] [stdout]    --> src/yz.rs:252:4
[INFO] [stdout]     |
[INFO] [stdout] 252 | fn throat_metric_d1<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_christoffel` is never used
[INFO] [stdout]    --> src/yz.rs:264:4
[INFO] [stdout]     |
[INFO] [stdout] 264 | fn throat_christoffel<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `throat_parallel_transport_vel` is never used
[INFO] [stdout]    --> src/yz.rs:287:4
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn throat_parallel_transport_vel<F: BaseFloat, C: ChartFn<F>, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Poly2` is never constructed
[INFO] [stdout]    --> src/yz.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 305 | struct Poly2<F: BaseFloat> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `eval` is never used
[INFO] [stdout]    --> src/yz.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl<F: BaseFloat> Poly2<F> {
[INFO] [stdout]     | --------------------------- method in this implementation
[INFO] [stdout] 310 |     fn eval(&self, x: F, y: F) -> F {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChartIndex` is never constructed
[INFO] [stdout]    --> src/yz.rs:322:8
[INFO] [stdout]     |
[INFO] [stdout] 322 | struct ChartIndex(usize);
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chart` is never constructed
[INFO] [stdout]    --> src/yz.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | struct Chart<F>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_half_edge_ccw` is never used
[INFO] [stdout]    --> src/yz.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn next_half_edge_ccw<F: BaseFloat>(mesh: &Mesh<F>, half_edge: HalfEdge) -> HalfEdge {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nth_half_edge_ccw` is never used
[INFO] [stdout]    --> src/yz.rs:341:4
[INFO] [stdout]     |
[INFO] [stdout] 341 | fn nth_half_edge_ccw<F: BaseFloat>(mesh: &Mesh<F>, half_edge: HalfEdge, n: usize) -> HalfEdge {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_transition` is never used
[INFO] [stdout]    --> src/yz.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn chart_transition<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `other_charts` is never used
[INFO] [stdout]    --> src/yz.rs:373:4
[INFO] [stdout]     |
[INFO] [stdout] 373 | fn other_charts<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `local_geometry` is never used
[INFO] [stdout]    --> src/yz.rs:387:4
[INFO] [stdout]     |
[INFO] [stdout] 387 | fn local_geometry<F: BaseFloat>(c: &Chart<F>, x: Vector2<F>) -> Vector3<F> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chart_geometry` is never used
[INFO] [stdout]    --> src/yz.rs:395:4
[INFO] [stdout]     |
[INFO] [stdout] 395 | fn chart_geometry<F: BaseFloat, T: ThroatFn<F>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `eval` and `drop_const` are never used
[INFO] [stdout]    --> src/yz.rs:420:8
[INFO] [stdout]     |
[INFO] [stdout] 419 | impl<F: BaseFloat, const MAX_DEG: usize, const NVAR: usize> NilPoly<F, MAX_DEG, NVAR> {
[INFO] [stdout]     | ------------------------------------------------------------------------------------- methods in this implementation
[INFO] [stdout] 420 |     fn eval<A: AddAssign<A> + Mul<F, Output = A> + Zero + Product<A>>(&self, xs: &[A]) -> A
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 436 |     fn drop_const(&self) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Atlas` is never constructed
[INFO] [stdout]    --> src/yz.rs:616:8
[INFO] [stdout]     |
[INFO] [stdout] 616 | struct Atlas<F: BaseFloat, T: ThroatFn<F>> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `index` is never read
[INFO] [stdout]   --> src/piecewise.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct HalfThroat<T: Float> {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 78 |     pub index: usize,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MeshLocal2DTriangle` is never constructed
[INFO] [stdout]    --> src/piecewise.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub enum ChartIndex {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 116 |     MeshLocal2DTriangle(HalfThroatIndex, HalfEdgeIndex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ChartIndex` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `frame_inv` is never read
[INFO] [stdout]    --> src/piecewise.rs:528:9
[INFO] [stdout]     |
[INFO] [stdout] 524 | pub struct Camera<T: Float> {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub frame_inv: Matrix3<T>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fragrays` is never used
[INFO] [stdout]    --> src/piecewise.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 534 | impl<T: BaseFloat> Camera<T> {
[INFO] [stdout]     | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn fragrays(&self) -> impl Iterator<Item = SituatedQV3<T>> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertices_to_half_edges` is never used
[INFO] [stdout]  --> src/intrinsic.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn vertices_to_half_edges<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vec<HalfEdgeIndex>> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertex_normals_compatible_with_face_normals` is never used
[INFO] [stdout]   --> src/intrinsic.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn vertex_normals_compatible_with_face_normals<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_compatible_normals` is never used
[INFO] [stdout]   --> src/intrinsic.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn count_compatible_normals<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compatible_normal_indices` is never used
[INFO] [stdout]   --> src/intrinsic.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn compatible_normal_indices<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `worst_normal_compatibility` is never used
[INFO] [stdout]   --> src/intrinsic.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn worst_normal_compatibility<T: BaseFloat>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_worst_normal_compatibility` is never used
[INFO] [stdout]    --> src/intrinsic.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn find_worst_normal_compatibility<T: BaseFloat>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dihedral_angle` is never used
[INFO] [stdout]    --> src/intrinsic.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn dihedral_angle<T: BaseFloat>(m: &Mesh<T>, hex: HalfEdgeIndex) -> Rad<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dihedral_angle_weighted_vertex_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn dihedral_angle_weighted_vertex_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `naive_average_vertex_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn naive_average_vertex_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lp_common_normal` is never used
[INFO] [stdout]    --> src/intrinsic.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub fn lp_common_normal(face_normals: Vec<Vector3<f64>>) -> Vector3<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `common_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn common_normals<T: BaseFloat>(m: &Mesh<T>) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normals_around_vertex` is never used
[INFO] [stdout]    --> src/intrinsic.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn normals_around_vertex<T: BaseFloat>(m: &Mesh<T>, vertex_index: usize) -> Vec<Vector3<T>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `half_edges_around_vertex` is never used
[INFO] [stdout]    --> src/intrinsic.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn half_edges_around_vertex<T: BaseFloat>(m: &Mesh<T>, vertex_index: usize) -> Vec<HalfEdge> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric_coons_patch` is never used
[INFO] [stdout]    --> src/intrinsic.rs:235:4
[INFO] [stdout]     |
[INFO] [stdout] 235 | fn barycentric_coons_patch<T: BaseFloat, W: VectorSpace<Scalar = T>>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `interpolate_normals` is never used
[INFO] [stdout]    --> src/intrinsic.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn interpolate_normals<T: BaseFloat>(he: &HalfEdge, a: Vector3<T>, b: Vector3<T>, t: T) -> Vector3<T> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.74s
[INFO] running `Command { std: "docker" "inspect" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc", kill_on_drop: false }`
[INFO] [stdout] 730b9807c0aa5263a2608f361f0505e0ca4247a0b3d36d12d982e7c1fadee2dc
